package xyz.zcq.springframework.beans.factory.support;

import xyz.zcq.springframework.beans.factory.config.BeanDefinition;

import java.lang.reflect.Constructor;

/**
 * 实例化策略 接口
 */
public interface InstantiationStrategy {

    /**
     * 实例化对象
     *
     * @param definition  bean 定义
     * @param beanName    bean 名称
     * @param constructor 构造函数
     * @param args        构造函数参数数组
     * @return 新对象
     */
    Object instantiate(BeanDefinition definition, String beanName, Constructor<?> constructor, Object[] args);

}
